package com.example.controller;

import com.example.entity.User;
import com.example.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.List;

/**
 * 在Spring框架中，@Controller和@RestController都用于标识一个类为处理HTTP请求的控制器，但它们之间有一些区别。
 * @Controller：@Controller注解用于标识一个类为Spring MVC控制器，通常用于返回视图页面。在@Controller注解的类中，
 * 处理请求的方法可以返回一个视图名称，Spring MVC会根据视图名称解析对应的视图页面并返回给客户端。
 *
 * @RestController：@RestController注解是@Controller和@ResponseBody注解的结合，用于标识一个类为RESTful风格的控制器，
 * 通常用于返回JSON、XML等数据。在@RestController注解的类中，处理请求的方法直接返回数据对象，Spring MVC会自动将数据对象序列化
 * 为JSON/XML格式并返回给客户端。
 *
 * 总结来说，@Controller用于返回视图页面，适用于传统的MVC架构；而@RestController用于返回数据，适用于RESTful风格的API。
 * 根据项目需求选择合适的注解来标识控制器类。
 */

@Controller
public class UserController {
    @Resource
    private UserService userService;

    @RequestMapping("/user/getAllUser")
    public ModelAndView getAllUser(){
        List<User> userList = userService.getAllUserList();
        ModelAndView modelAndView = new ModelAndView();//创建一个ModelAndView对象
        modelAndView.setViewName("index");//需要返回的视图的名称
        modelAndView.addObject("userList", userList);//添加一个返回的元素，key和value
        return modelAndView;
    }
}
